linux文件IO | 您所在的位置:网站首页 › htonll 头文件 › linux文件IO |
目录 一、文件描述符 二、打开文件: open 三、读取:read 四、写入:write 五、 关闭: close 不带缓冲 不带缓冲指的是每个read和write都调用内核中的相应系统调用 不带缓冲的I/O函数不是ANSI C的组成部分,但是是POSIX和XPG3的组成部分 通过文件描述符来访问文件 一、文件描述符对于内核而言,所有打开文件都由文件描述符引用。 文件描述符是一个非负整数。当打开一个现存文件或创建一个新文件时,内核向进程返回一个文件描述符。 当读、写一个文件时,用open或creat返回的文件描述符标识该文件,将其作为参数传送给read或write。 在posiX.1应用程序中,幻数0、1、2应被代换成符号常数STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO。 这些常数都定义在头文件中。 由shell默认打开,分别为0/1/2 标准文件 文件描述符 介绍 标准输入 0(stdin) 从键盘输入 标准输出 1(stdout) 从屏幕输出 标准错误输出 2(stderr) 从屏幕输出(错误信息) hello.txt 3 hello.txt 二、打开文件: openman open #include #include #include int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode); 功能: 打开文件 参数: pathname:文件名 flags:打开的方式 O_RDONLY:只读的方式打开文件 O_WRONLY:只写的方式打开文件 这三个参数互斥 O_RDWR:读写的方式打开文件 O_CREAT:如果该文件不存在,就创建一个新的文件,并用第三的参数为其设置权限。 O_EXCL:如果使用O_CREAT时文件存在,则可返回错误消息。这一参数可测试文件是否存在。 O_NOCTTY:使用本参数时,如文件为终端,那么终端不可以作为调用open()系统调用的那个进程的控制终端。 O_TRUNC:如文件已经存在,那么打开文件时先删除文件中原有数据 (清空模式) O_APPEND:以添加方式打开文件,所以对文件的写操作都在文件的末尾进行 (追加模式) mode:模式:被打开文件的存取权限,为8进制表示法。 如果以0777创建,会设置权限为0775 返回: 成功返回文件描述符、 失败返回-1,并返回错误码 标准IO和文件IO的权限 标准IO 文件IO fopen open r O_RDONLY r+ O_RDWR w O_WRONLY|O_CREAT|O_TRUNC,0664 w+ O_RDWR|O_CREAT|O_TRUNC,0664 a O_WRONLY|O_CREAT|O_APPEND,0664 a+ O_RDWR|O_CREAT|O_APPEND,0664 三、读取:read#include ssize_t read(int fd, void *buf, size_t count); 功能: 根据文件描述符,读取相应的文件中的数据 参数: fd:文件描述符 buf:读取出来的数据存放的位置 count:读取数据的字节大小 返回值: 成功返回读取的字节数,读到末尾成功返回0 失败返回-1,并设置错误码 四、写入:write#include ssize_t write(int fd, const void *buf, size_t count); 功能: 根据文件描述符,写入数据到相应的文件中 参数: fd:文件描述符 buf:写入的数据存放的位置 count:写入数据的字节大小 返回值: 成功返回写入的字节数 失败返回-1,并设置错误码 五、 关闭: close#include int close(int fd); 功能: 关闭文件描述符对应的文件 参数: fd:文件描述符 返回值: 成功返回0 失败返回-1,并设置错误码 |
CopyRight 2018-2019 实验室设备网 版权所有 |